package com.warm.base.design.b_mediator;

/**
 * @Date: 2019/11/22 15:10
 * @Author: LChuang
 * @Description: 中介者模式(行为型)
 *
 *      用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用，
 *      从而使其耦合松散，而且可以独立地改变它们之间的交互。
 */
public class Client {

    /**
     * Mediator 抽象中介者:中介者定义一个接口用于与各同事（Colleague）对象通信。
     * ConcreteMediator 具体中介者: 具体中介者通过协调各同事对象实现协作行为。了解并维护它的各个同事。
     * Colleague 抽象同事类: 定义同事类接口,定义各同事的公有方法.
     * ConcreteColleague 具体同事类: 实现抽象同事类中的方法。每一个同时类需要知道中介者对象；
     *          每个具体同事类只需要了解自己的行为，而不需要了解其他同事类的情况。
     *          每一个同事对象在需与其他的同事通信的时候，与它的中介者通信。
     */
    public static void main(String[] args) {
        Mediator mediator = new ConcreteMediator();
        Colleague a = new ConcreteColleagueA(mediator);
        Colleague b = new ConcreteColleagueB(mediator);
        a.send();
        b.send();
    }
}
